#include <bits/stdc++.h>
using namespace std;
vector<bool> cur;
bool check(int time, int f, int w, int sum) {
long long fval = 1LL * time * f, wval = 1LL * time * w;
int closestVal = 0;
for(long long s = min(0LL+sum, fval); s >= 0; s--) {
if(cur[s]) {
closestVal = s;
break;
}
}
int remVal = sum - closestVal;
return (wval >= remVal);
}
void solve() {
int n, f, w;
cin >> w >> f >> n;
vector<int> arr(n);
int sum = 0;
for(int i = 0; i < n; i++) {
cin >> arr[i]; sum += arr[i];
}
vector<bool> dp(sum+1, false);
cur.clear();
cur.resize(sum+1, false);
dp[0] = true;
dp[arr[0]] = true;
for(int i = 1; i < n; i++) {
for(int s = 1; s <= sum; s++) {
cur[s] = dp[s];
if(s-arr[i] >= 0)
cur[s] = cur[s] | dp[s-arr[i]];
}
dp = cur;
}
cur = dp;
int l = 0, r = sum;
while(r - l > 1) {
int mid = l + (r - l) / 2;
if(check(mid, f, w, sum))
r = mid;
else
l = mid;
}
cout << r << endl;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t = 1;
cin >> t;
while(t-- > 0) solve();
return 0;
}
1302. Deepest Leaves Sum | 1209. Remove All Adjacent Duplicates in String II |
994. Rotting Oranges | 983. Minimum Cost For Tickets |
973. K Closest Points to Origin | 969. Pancake Sorting |
967. Numbers With Same Consecutive Differences | 957. Prison Cells After N Days |
946. Validate Stack Sequences | 921. Minimum Add to Make Parentheses Valid |
881. Boats to Save People | 497. Random Point in Non-overlapping Rectangles |
528. Random Pick with Weight | 470. Implement Rand10() Using Rand7() |
866. Prime Palindrome | 1516A - Tit for Tat |
622. Design Circular Queue | 814. Binary Tree Pruning |
791. Custom Sort String | 787. Cheapest Flights Within K Stops |
779. K-th Symbol in Grammar | 701. Insert into a Binary Search Tree |
429. N-ary Tree Level Order Traversal | 739. Daily Temperatures |
647. Palindromic Substrings | 583. Delete Operation for Two Strings |
518. Coin Change 2 | 516. Longest Palindromic Subsequence |
468. Validate IP Address | 450. Delete Node in a BST |